Integrated circuit data processors have become increasingly complex and have incorporated as internal components more functions previously implemented external to the integrated circuit. While the technology available to manufacture packages for integrated circuits has advanced to provide an increasing number of possible external terminals, or pins, it remains true that pin count affects the price of a semiconductor device as well as available integrated circuit packages. Furthermore, available technologies for the assembly of printed circuit boards is relatively expensive for high pin-count packages. Physical size of the package can also be an issue. These factors have resulted in highly complex data processors being contained in integrated circuit packages with a relatively small number of pins.
One well known method of reducing the number of required pins is to assign multiple functions to a single pin. The particular function assigned to a particular pin at any one moment is then determined by software, hardware or some combination thereof. Certain kinds of integrated circuit data processors, often referred to as microcontrollers, often are capable of operating in multiple modes, with certain pins having different functions in different modes of operation. A common example is a microcontroller operable either in a so-called "single chip mode" or in a so-called "expanded mode". In the expanded mode, certain of the pins of the integrated circuit package are used to provide the address, data and control connections required to connect the microcontroller to an external bus. In this mode, the microcontroller may access memory and other peripheral devices which can be accessed only by means of a bus. In the single chip mode, those pins are used for other input/output (I/O) functions such as for timing functions, parallel I/O, serial communication and the like. The microprocessor uses internal memory storage and peripherals during single chip mode.
The assignment of multiple functions to pins of an integrated circuit data processor also poses problems for the designers of development tools. Development tools are the hardware and software systems used by developers of an integrated circuit data processor application to create their own products. Development systems must typically perform several roles. The development system should provide as much information as possible regarding the internal state of the integrated circuit data processor, in order to assist in identifying the source of errors and characterization of operating conditions. They must permit the software being developed to reside in memory external to the integrated circuit even though that code may ultimately reside in non-volatile memory internal to the microprocessor. Development systems must also duplicate as precisely as possible the functionality of the integrated circuit as it may ultimately be used in production volumes. For example, a development system intended to permit the development of products which will use a microcontroller in single chip mode must usually use that same microcontroller, or a very similar one, in an expanded mode and must include all logic required to replace, or emulate, all pin functions available in single chip mode but not available in expanded mode.
A particular challenge of many development systems involves the provision of a clock signal reflecting an internal clock from the microcontroller to the emulation system when the clock signal is not provided on a integrated circuit pin which communicates multiplexed data for an alternate function required by the development system. In such situations, external circuitry within the emulation system may be developed to synthesize the clock signal and to allow the remaining signal which was part of the multiplexed data to be output on the pin without interference. While external synthesis of the clock signal is an appropriate solution to the problem, there must be a mechanism which synchronizes the synthesized signal generated by the emulation system with the actual signal used by the microcontroller. The synchronization step is especially problematic for signals which are not normally made available to external devices. In addition to the challenge of synchronizing the synthesized signal, designers of development systems are also faced with the possibility that the characteristic of the signal within the microcontroller may be modified. If the modification is not visible and the microcontroller does not provide the signal externally because the integrated circuit pin is required for an alternate function required by the development system, a faithful external reproduction by the emulation system may not be possible.
Accordingly, there is a need for integrated circuit data processors which provide access to internally generated signals that would not otherwise be externally visible. This need is especially illustrated when the integrated circuit data processors are emulated by development systems which must accurately simulate such internally generated signals at all times.